#include <stdio.h>

//int main()
//{
//	//  / 除法 - 得到的是商
//	// 除法操作符的两个操作数都是整数的话，执行的是整数除法
//	// 除法操作符的两个操作数只要有一个浮点数，执行的是小数除法
//	// 
//	//  % 取模（	取余）得到的是余数
//	//  取模操作符的操作数必须是整数
//
//	//printf("%lf\n", 10 / 3.0);//5
//	//printf("%d\n", 10 % 2);//0
//	int a = -5;
//
//	return 0;
//}

//int main()
//{
//	int a = 3;
//	//00000000000000000000000000000011
//	int b = a << 1;
//
//	printf("%d\n", b);
//	printf("%d\n", a);
//
//	return 0;
//}

//int main()
//{
//	int a = -3;
//	//10000000000000000000000000000011
//	//11111111111111111111111111111100
//	//11111111111111111111111111111101 - 补码
//	//
//	int b = a << 1;
//	//11111111111111111111111111111010
//	//11111111111111111111111111111001
//	//10000000000000000000000000000110
//
//	//11111111111111111111111111111010
//	//10000000000000000000000000000101
//	//10000000000000000000000000000110
//	printf("%d\n", b);//-6
//	printf("%d\n", a);//-3
//
//	return 0;
//}

//>> 右移操作符
//VS：算术右移
//int main()
//{
//	int a = -5;
//	//10000000000000000000000000000101
//	//11111111111111111111111111111010
//	//11111111111111111111111111111011
//	//
//	int b = a >> 1;
// 
//	//11111111111111111111111111111101
//	//11111111111111111111111111111100
//	//10000000000000000000000000000011
//	//-3
//	printf("b = %d\n", b);
//	printf("a = %d\n", a);//-5
//
//	return 0;
//}

//
//int main()
//{
//	int a = 3;
//	int b = -5;
//	int c = a ^ b;//按位异或 - 对应的二进制位，相同为0，相异为1
//	//11111111111111111111111111111011 - -5的补码
//	//00000000000000000000000000000011 - 3的补码
//	//11111111111111111111111111111000
//	//11111111111111111111111111110111
//	//10000000000000000000000000001000
//
//	//int c = a | b;//按位或
//	//11111111111111111111111111111011 - -5的补码
//	//00000000000000000000000000000011 - 3的补码
//	//11111111111111111111111111111011
//
//	//int c = a & b;//按位与
//	//00000000000000000000000000000011 - 3的补码
//	//10000000000000000000000000000101 
//	//11111111111111111111111111111010
//	//11111111111111111111111111111011 - -5的补码
//	//00000000000000000000000000000011 - 3的补码
//	//00000000000000000000000000000011
//	printf("%d\n", c);
//
//	return 0;
//}

//a^a = 0
//0^a = a
//3^3^5 = 5
//3^5^3 = 5
//异或是支持交换律的
//011
//101
//110
//011
//101
//int main()
//{
//	int a = 3;
//	int b = 5;
//	//int tmp = 0;
//	printf("交换前：a=%d b=%d\n", a, b);
//	//3
//	//a = a ^ b;
//	//b = a ^ b;
//	//a = a ^ b;
//
//	//2
//	/*a = a + b;
//	b = a - b;
//	a = a - b;*/
//	//1
//	//tmp = a;
//	//a = b;
//	//b = tmp;
//	printf("交换后：a=%d b=%d\n", a, b);
//
//	return 0;
//}

//int main()
//{
//	int a = 11;
//	a & 1;
//	a = a >> 1;
//	//00000000000000000000000000001011
//	//00000000000000000000000000000001
//	//00000000000000000000000000000001
//
//	return 0;
//}

//int main()
//{
//	int a = 3;
//	a = a + 3;
//	a += 3;
//
//	a = a >> 3;
//	a >>= 3;
//
//	a = a ^ 5;
//	a ^= 5;
//
//	return 0;
//}

//int main()
//{
//	int a = 3;//创建并初始化
//	a = 5;//赋值
//	return 0;
//}

//int main()
//{
//	int flag = 5;
//	if (flag)//flag为真做什么
//	{
//
//	}
//	if (!flag)//flag为假做什么
//	{
//
//	}
//	return 0;
//}
//int main()
//{
//	int a = 10;
//	int* p = &a;//&取地址操作符
//	*p = 20;//解引用操作符(间接访问操作符)
//
//	//int arr[10];
//	//&arr;//取出数组的地址
//
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	printf("%d\n", sizeof a);
//	printf("%d\n", sizeof(a));
//
//	printf("%d\n", sizeof(int));
//
//	int arr[10] = { 0 };
//	printf("%d\n", sizeof(arr));
//	printf("%d\n", sizeof(arr[0]));
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	printf("%d\n", sz);
//
//	return 0;
//}
//
//int main()
//{
//	int a = 3;
//	a = 10;
//	a + 3 = 15;//err
//	return 0;
//}
//


//int main()
//{
//	int a = 0;
//	//00000000000000000000000000000000
//	//11111111111111111111111111111111
//	//11111111111111111111111111111110
//	//10000000000000000000000000000001
//	//
//	printf("%d\n", ~a);
//
//	return 0;
//}
//

//int main()
//{
//	int a = 3;
//	//00000000000000000000000000000011
//	//00000000000000000000000000001000
//	a |= (1 << 3);
//	printf("%d\n", a);
//
//	//00000000000000000000000000001011
//	//11111111111111111111111111110111
//	a &= (~(1 << 3));
//	printf("%d\n", a);
//
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	//int b = --a;//前置--，先--，后使用
//	int b = a--;//后置--，先使用，后--
//	printf("a=%d b=%d\n", a, b);
//
//	//printf("%d\n", ++a);//前置++，先++，后使用
//	//printf("%d\n", a);
//
//	//int b = a++;//后置++，先使用，再++
//	//int b = a,a=a+1;
//	//printf("a=%d b=%d\n", a, b);
//
//	return 0;
//}

//问题代码
//int main()
//{
//	int a = 1;
//	int b = (++a) + (++a) + (++a);
//	printf("%d\n", b);
//	return 0;
//}

//int main()
//{
//	float a = 3.14f;
//	int b = (int)a;
//	//int b = int(a);//err
//	return 0;
//}

//int main()
//{
//	//int a = 3 && 0;//1 0
//	//printf("%d\n", a);
//
//	int a = 0 || 0;//1 0
//	printf("%d\n", a);
//
//	return 0;
//}

#include <stdio.h>
int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	//i = a++ && ++b && d++;

	i = a++||++b||d++;
	printf("a = %d\nb = %d\nc = %d\nd = %d\n", a, b, c, d);

	return 0;
}

